//
//  main.swift
//  test1
//
//  Created by lanou on 16/10/20.
//  Copyright (c) 2016年 ZhouWC. All rights reserved.
//
//变量：定义之后允许改变，通过var来表示
//常量：定义了之后不允许改变，通过let表示，必须赋值

import Foundation
//swift会根据初值来对变量、常量进行自动推断
let num1 = 30;
let num2 = 3.14;
//明确指明数据类型let /var 变量名：数据类型＝初值
var num3:Int  = 20;
//不同数据类型之间不能直接运算，必须强制转换

let result:Double = num2+Double(num3);
//字符character：用双引号表示，单个字母，指明类型character
let cha:Character = "a";
//字符串：String：双引号表示多个字符
let str = "heshuai";
//可选类型：如果某一个变量可能为nil，那么这个变量就是数据可选类型，可选类型用？表示
//打印可选类型会有optional字眼
var num:Int? = 30
//num = nil;
let num4:Int  = 20;
//可选类型不能直接参与运算，必须强制解包才能进行运算
let sum = num!+num4;

//unexpectedly found nil while unwrapping am optional value
//对可选类型进行强制解包必须确保可选类型的值不是nil，否则对nil进行强制解包会导致系统崩溃
println("result = \(result)")

let flag:Bool = true;
//1.可以省略小括号，不能省略大括号
//2.没有非零即真的概念，只有true/flase
if flag{
    println("flag is true ");
}
//3.可选类型的条件判断
var name:String? = "heshuai";
//(1.)if-let/var：先判断可选类型是否为nil，如果不为nil，就将name进行强制解包后的值赋值给temp，然后执行代码段，否则的话不执行
println("name=\(name)");
if let temp = name {
    println(temp);
}
//(2.)if-let/var-where:在iflet的基础上对定义出来的变量再做一次判断,条件都满足叫执行｛｝里面的代码块
if let temp = name where temp=="heshuai"{
    print("if-let-where:name=heshuai");
}

let n:Int?=10;
if let numb = n{
    for(var i = 0;i<n;i++){
        println("hello heshuai");
    }
}
//(3.)guard: 如果可选值count不为nil的话叫强制解包后的值给temp，否则叫执行｛｝里面的代码块，return一定要写
//func demo(){
//    let count:Int? = 3
//    guard let temp = count else {
//        println("count 为nil");
//        return
//    }
//    println(temp)
//}
//
//demo();
let number1:Int? = 10
if let number2=number1 where number2%2==0{
    println("偶数");
}else{
    println("奇数");
}